![]() |
![]() |
|
rtk 20002000.1.1 (dopolni)1. podnalogaStarejši si, kot misliš! Koliko sekund je minilo med začetkom (0 h) dneva, v katerem si se rodil, in začetkom današnjega dneva? Na prvi pogled se zdi, da jih je 24 * 60 * 60 * število dni med obema datumoma. To je skoraj res, ušteli smo se le za kakšen ducat sekund. To so tako imenovane prestopne sekunde, ki so vrinjene po potrebi vsakih nekaj let. Več o tem si lahko prebereš na Wikipediji. Seznam datumov, ko so bile vrinjene prestopne sekunde, je na voljo spodaj. Vsak element seznama je datum (leto-mesec-dan) tik po tem, ko je bila ob polnoči vrinjena prestopna sekunda.
NalogaDopolni funkcijo
Vhodni podatkiDatum rojstva in današnji datum v obliki niza: leto-mesec-dan. Izhodni podatkiŠtevilo sekund, ki je minilo med obema datuma. PrimerVhod
Izhod
Uradna rešitevfrom datetime import date def pretvori_datum(datum): '''pretvori datum iz niza v objekt date''' leto, mesec, dan = datum[:4], datum[5:7], datum[8:] return date(int(leto), int(mesec), int(dan)) def sekunde(rojstni_dan, danes): datumi = ['1972-07-01','1973-01-01','1974-01-01','1975-01-01', '1976-01-01','1977-01-01','1978-01-01','1979-01-01', '1980-01-01','1981-07-01','1982-07-01','1983-07-01', '1985-07-01','1988-01-01','1990-01-01','1991-01-01', '1992-07-01','1993-07-01','1994-07-01','1996-01-01', '1997-07-01','1999-01-01','2006-01-01','2009-01-01', '2012-07-01','2015-07-01','2017-01-01'] rojstni_datum = pretvori_datum(rojstni_dan) danasnji_datum = pretvori_datum(danes) stevilo_dni = (danasnji_datum - rojstni_datum).days prestopne_sekunde = 0 for datum in datumi: d = pretvori_datum(datum) if (d - rojstni_datum).days > 0 and (d - danasnji_datum).days <= 0: prestopne_sekunde += 1 return stevilo_dni * 24 * 60 * 60 + prestopne_sekunde 2000.1.2 (dopolni)1. podnalogaOperacijski sistem skrbi za dodeljevanje pomnilnika procesom, ki tečejo na
njem. Zaželeno je, da ima ta postopek takšne lastnosti, da je dodeljevanje in
sproščanje pomnilnika hitro, njegova razdrobljenost majhna, knjigovodski
podatki sistema o kosih pomnilnika pa hitro dosegljivi in neobsežni.
Nekaterim takšnim lastnostnim ustreza metoda dodeljevanja, pri kateri sistem
daje pomnilnik na voljo v kosih, velikih po NalogaDopolni funkcijo
Vhodni podatkiŠtevilo zaprošenih bajtom pomnilnika. Izhodni podatkiŠtevilo bajtov dodeljenega pomnilnika. PrimerVhod
Izhod
Uradna rešitevdef pomnilnik(m): if m == 0: return 0 pomnilnik = 1 while pomnilnik < m: pomnilnik = pomnilnik * 2 return pomnilnik 2000.1.3 (dopolni)1. podnalogaBliža se konec šolskega leta in čas je, da učitelji zaključijo ocene. Napisali so funkcijo, ki prebere ocene in vrne podatek o uspehu (pozitiven ali negativen). Če je uspeh pozitiven, izpiše tudi povprečno oceno, zaokroženo na eno decimalno mesto. Za vsak predmet je podana ena ocena, ki je celo število med 1 in 5. Uspeh je negativen, če je vsaj en predmet ocenjen z 1, sicer pa pozitiven. NalogaDopolni funkcijo
Vhodni podatkiSeznam ocen. Izhodni podatki
Primer
Uradna rešitevdef ocene(sez): '''Vrne podatek o zaključnem uspehu (pozitiven ali negativen) in povprečno oceno v primeru, da je uspeh pozitiven.''' stevilo_ocen = len(sez) vsota = 0 for ocena in sez: if ocena == 1: return 'Uspeh je negativen.' else: vsota += ocena povprecje = round(vsota / stevilo_ocen, 1) return 'Uspeh je pozitiven. Povprečna ocena je ' + str(povprecje) + '.' 2000.1.4 (dopolni)1. podnalogaJanez ima na svojem računalniku podatkovno zbirko s celotnim seznamom svojih CDjev. Za vsak CD ima podatke o izvajalcu, naslov CDja in seznam vseh skladb na CDju. Zdaj želi svoj seznam, ki je že urejen po izvajalcu in imenu albuma, izpisati na lepši način, tako da se pri izpisu ne bodo po nepotrebnem ponavljala imena izvajalcev in naslovi albumov. NalogaPomagaj mu dopolniti funkcijo
Vhodni podatkiSeznam skladb s podatki o izvajalcu in naslovom CDja. Izhodni podatkiNiz urejenih podatkov o skladbah. PrimerVhod
Izhod s funkcijo print
Izhod programa
KomentarDo željene oblike izpisa pridemo s funkcijo print, vendar Tomo preverja kaj funkcija vrne, zato na koncu programa uporabimo return. Seveda se lahko z ukazom print pred tem prepričamo, kako izgleda izpis. Uradna rešitevdef glasba(skladbe): '''Uredi izpise podatkov o skladbah.''' # V prvem prehodu skozi vse podatke si le zapomnimo dolžino najdaljšega imena # izvajalca, naslova albuma in naslova skladbe, da bomo kasneje lahko podatke # pri izpisu lepo poravnali v stolpce. max_izvajalec = 0 max_album = 0 max_naslov = 0 for skladba in skladbe: izvajalec, album, naslov = skladba.split(', ') if len(izvajalec) > max_izvajalec: max_izvajalec = len(izvajalec) if len(album) > max_album: max_album = len(album) if len(naslov) > max_naslov: max_naslov = len(naslov) # V drugem prehodu beremo zapise enega za drugim in če ima nek zapis istega # izvajalca in album kot prejšnji, moramo izpisati le naslov skladbe. izpis = '' trenutni_izvajalec = '' trenutni_album = '' for skladba in skladbe: izvajalec, album, naslov = skladba.split(', ') d_izvajalec = len(izvajalec) d_album = len(album) d_naslov = len(naslov) if izvajalec != trenutni_izvajalec: trenutni_izvajalec = izvajalec izpis += izvajalec + '{0}'.format(' ' * (max_izvajalec - d_izvajalec + 2)) else: izpis += '{0}'.format(' ' * (max_izvajalec + 2)) if album != trenutni_album: trenutni_album = album izpis += album + '{0}'.format(' ' * (max_album - d_album + 2)) else: izpis += '{0}'.format(' ' * (max_album + 2)) izpis += naslov izpis += '\n' return izpisMesto objave ob koncu projekta 15.9.2018 |